package com.gxc.integer;

import java.util.Scanner;

/**
 * IGMP 协议中，有一个字段称作最大响应时间 (Max Response Time) ，HOST收到查询报文，解折出 MaxResponsetime 字段后，需要在 (0，MaxResponseTime] 时间 (s) 内选取随机时间回应一个响应报文，如果在随机时间内收到一个新的查询报文，则会根据两者时间的大小，选取小的一方刷新回应时间。
 *
 * 最大响应时间有如下计算方式：
 *
 * 当 Max Resp Code < 128, Max Resp Time = Max Resp Code；
 * 当 Max Resp Code ≥ 128, Max Resp Time = (mant | 0x10) << (exp + 3)；
 * img
 *
 * 注: exp最大响应时间的高5~7位: mant 为最大响应时间的低4位。
 *
 * 其中接收到的MaxRespCode 最大值为 255，以上出现所有字段均为无符号数。
 *
 * 现在我们认为 HOST收到查询报文时，选取的随机时间必定为最大值，现给出 HOST 收到查询报文个数 C，HOST 收到该报文的时间T，以及查询报文的最大响应时间字段值 M，请计算出HOST 发送响应报文的时间。
 *
 * 输入描述
 * 第一行为查询报文个数 C，后续每行分别为 HOST 收到报文时间 T，及最大响应时间M，以空格分割。
 *
 * 输出描述
 * HOST 发送响应报文的时间。
 *
 * 备注
 * 用例确定只会发送一个响应报文， 不存在计时结束后依然收到查询报文的情况
 */
public class ResponseTime {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int responseTime = Integer.MAX_VALUE;
        for (int i = 0; i < n; i++) {
            int start = scanner.nextInt();
            int code = scanner.nextInt();
            int curTime = 0;
            if (code < 128) {
                curTime = code;
            } else {
                int exp = (code & 0x70) >> 4;
                int mant = code & 0x0F;
                curTime =  (mant | 0x10) << (exp + 3);
            }
            responseTime = Math.min(responseTime, start + curTime);
        }
        scanner.close();

        System.out.println(responseTime);
    }
}
